デフォルトのセキュリティグループとは何かを改めて整理してみた
はじめに
こんにちは。AWS事業本部コンサルティング部に所属している和田響です。
AWSを使用したことがある方であれば、一度は目にしたことがあるデフォルトのセキュリティグループですが、結局これはなんなのか?
この記事ではデフォルトのセキュリティグループについて改めて調べてみたのでその内容を共有いたします。
どなたかの参考になれば幸いです。
先に3行まとめ
- デフォルトのセキュリティグループがアタッチされたリソース同士で全てのトラフィックが許可される
- デフォルトのセキュリティグループは削除できない
- ベストプラクティスはデフォルトのセキュリティグループのルールを削除すること
デフォルトのセキュリティグループとは
デフォルトのVPCおよび作成したVPCには、「default」という名前のセキュリティグループが適用されます。
これがいわゆる「デフォルトのセキュリティグループ」です。
デフォルトのセキュリティグループのルール
以下はデフォルトのセキュリティグループにアタッチされている、デフォルトのルールです。
インバンドルール
送信元 | プロトコル | ポート範囲 | 説明 |
---|---|---|---|
sg-1234567890abcdef0 | すべて | すべて | このセキュリティグループに割り当てられたすべてのリソースからのインバウンドトラフィックを許可します。ソースは、このセキュリティグループの ID です。 |
アウトバウンドルール
送信先 | プロトコル | ポート範囲 | 説明 |
---|---|---|---|
0.0.0.0/0 | すべて | すべて | すべてのアウトバウンド IPv4 トラフィックを許可します。 |
::/0 | すべて | すべて | すべてのアウトバウンド IPv6 トラフィックを許可します。このルールは、VPC に IPv6 CIDR ブロックが関連付けられている場合にのみ追加されます。 |
説明の通りデフォルトのセキュリティグループがアタッチされたリソース同士で全てのトラフィックを許可します。
参照: https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-security-group.html
インターネットからのすべての通信を許可するわけではない
たとえばALB,EC2,RDSを用いた一般的な3層構成を例にします。
これらのすべてのリソースにデフォルトのセキュリティグループがアタッチされている場合、以下のように各リソース間ですべての通信が可能になります。
以下のようにインターネットからのすべての通信を許可するわけではないという点は抑えておきましょう。
合ってる
:デフォルトのセキュリティグループに割り当てられたリソース同士の通信を許可する
間違ってる
:インターネットからのすべての通信を許可する
使用は推奨されない
セキュリティのベストプラクティスとして、必要最低限の通信のみを許可すべきだという最小権限の原則と呼ばれるものがあります。デフォルトのセキュリティグループはこの原則に反して、必要以上のアクセスを許可してしまう可能性があります。
したがってAWSではデフォルトのセキュリティグループの使用が推奨されていません。
リソースごとに最小限の通信を許可したセキュリティグループを作成しましょう。
削除できない
前述の通りデフォルトのセキュリティグループの使用は推奨されていないのであれば、いっそのこと削除したいところです。
しかしながら、デフォルトのセキュリティグループは削除することができません。
削除しようとすると以下のようなエラーになります。
ルールは削除できる
デフォルトのセキュリティグループ自体は削除できませんが、デフォルトのセキュリティグループのルールを削除することは可能です。
AWSのベストプラクティスとしてもこれを推奨しています。
つまりデフォルトのセキュリティグループは削除できないため、そのルールを削除することで「なんの通信要件も許可していないセキュリティグループ」にしてしまおうということです。そうすることで、間違ってデフォルトのセキュリティグループ使用してしまった場合のセキュリティリスクを軽減できます。
具体的な手順はこちらのブログを参照ください。
最後に
今回は、個人的にわかっているようでわかっていなかったデフォルトのセキュリティグループについて改めてまとめてみました。
どなたかのお役に立てれば幸いです。